2-Way Peg
1.はじめに
スケーリングソリューションとして、複数のチェーンに機能を分担する方法があり、2-way-pegはそのチェーン間の繋ぎの役割をになっている。これは、Bitcoinにおける問題であり、Bitcoin-Sidechainの双方のアセットの行き来を可能にしている。
同様にEthereumではPlasmaがその役割を果たしている。
そもそもSideChainという概念はBlockStreamが提唱したもので、2Way-pegによってスケールされるものを指す。
つまり、「2way-peg無くして、SideChainなし」
なので、この記事では、2way-peg、Sidechainに関する説明とこれらに追従する技術の解説をする
2.Sidechainのおさらい
サイドチェーン(Two-way Peg)を導入することがビットコインネットワークが得られる恩恵をまとめていきましょう。
2.1双方向でやり取りできる(Two-way Peg)
メインチェーンからサイドチェーンへ、そしてサイドチェーンからメインチェーンへと双方向でデジタルアセットのやり取りができます。現状のビットコインでもCounterpartyのようにProof of Burnでメインチェーンからサイドチェインにビットコインを送ることは可能です。Proof of Burnとは、誰も入手不可能な特別なアドレスに送金することで消失(Burn)させ、サイドチェーン側にビットコインを持ってくる方法です。しかし、この方法では、サイドチェイン側からビットコインに資産を戻すことができません。なので、後述するような方法で双方向でのやり取りが可能なサイドチェーンの開発が進められています。
2.2スマートコントラクトなどの新機能を導入できる
サイドチェーンの実装により、イーサリアムのようなスマートコントラクトの機能をビットコインに追加することが可能です。他にも、送金手数料の軽減やブロック承認時間の短縮などの改善を行うことも可能です。詳しくは後述しますが、Rootstockは、サイドチェーンによってスケーラビリティ問題と承認時間の改善、およびスマートコントラクトをビットコインブロックチェーン上で実装することを目指しています。
2.3アップデートのためにフォークの必要がない
冒頭でビットコインブロックチェーンで技術拡張を行うことは困難であるとお伝えしました。現状、新しい機能を追加したり改善したりする場合は、ソフトフォークあるいはハードフォークが実施されています。しかし、このフォークは下記の記事で詳しくお伝えしているようにコミュニティの分裂など大きなリスクがあります。サイドチェーンが実装されれば、ビットコインのコア技術をしっかりと利用しつつ、新しい技術を素早く低リスクで導入することが可能になります。
3.概要
https://gyazo.com/9135790225218254742da3d0bd8962a2
サイドチェーンとは2014年に公表された、ビットコインのメインチェーンとなるブロックチェーンの側鎖となる概念です。サイドチェーンを導入すると、メインチェーンとサイドチェーンの間でビットコインなどのデジタルアセットをやり取りできることになります。
上図で「Two-way Peg」と書かれているのは、メインチェーンとサイドチェーンの間で双方向でやり取りできるということです。従来では、メインチェーン→サイドチェーンという一方向(One-way peg)でしかデータは送れませんでしたが、現在開発が進められているサイドチェインでは、サイドチェーン→メインチェーンという方向での送信も可能になります。
https://gyazo.com/642d9e25ce97f9674dbb54555b94be4a
上図のように、サイドチェーンはメインチェーンの機能を拡張することが可能です。例えば、イーサリアムの機能に代表されるスマートコントラクトをビットコインのサイドチェーン上で実装することができるようになります。
2-way pegは以下のように動作します。
メインチェーン上で操作しているユーザーが、特別なアドレスにXトークンを送信します。これらの資金はメインチェーン上でロックされ、対応する数のトークンがサイドチェーン上に作成されます。これによってユーザーはサイドチェーン上でトークンを使用できるようになります。最終的には、ユーザーはトークンをメインチェーンに戻すことができ、実装によってはサイドチェーン上の資産がロックされたり、破壊されたりします。
4.五つの実装方法
4.1simplified payment verification(SPV Proof Verification)
SPVはライトクライアントによって行われます。ライトクライアントはブロックチェーンクライアントで構成され、完全な状態を持たずにブロックチェーン上のトランザクションを検証できます。この方式では、再編成期間があり、他のユーザが元の要求に反するマークル木証明を提出することができます。この方式では、取引はマークルツリー証明を介して強制されるため、第三者を排除することができます。
https://gyazo.com/482cd0f93014cf21fbccd117121de537
こうしたSPV Proofの導入には、そのProofをTrustlessに検証できる実装の必要があり、ここに課題があります。
SPV Proofの検証とはすなわち全ブロックのPoWが正当か検証する作業となるのですが、毎回全ブロックの計算を回すことは年々不可能なサイズになってきます。 またNode間でSPV Proof(つまり全ブロックのPoW検証に必要なデータ)をやり取りすることもネットワーク帯域幅を考えると現実的ではなく、マイナーに対する負荷にもなりえます。
10BTCのメインチェーンからサイドチェーンへの移動を考えていきましょう。
https://gyazo.com/04512185ab1d624ca66109f487b8bb8e
まず、送り手が10BTCを上図のような「lockbox script」に送るトランザクションを作成します。そのときトランザクションには小さな特殊データを含めておきます。そのトランザクションを含むブロックがビットコインのブロックチェーンに追加されると、サイドチェーンへ移動するためのシグナルとなり、10BTCがサイドチェーンに送られるのです。
このようにSPV sidechainは、トランザクション中にシグナルのためのデータ領域を作る必要があるのでソフトフォークにより実装されます。SPV sidechainは上述したようにブロックチェーン間で仲介する機関が存在しないのでP2Pを保つことが可能です。しかし、マイナーが不正なシグナルデータを入れることができてしまうという懸念があります。
4.2centralized two-way pegs(Interactive Proof of Proof of Work、Single Custodian)
centralized two-way pegsは、中央のエンティティを信頼しているため、効率性の面でメリットがあります。例としては、取引所が挙げられます。取引所とは、顧客に代わって暗号通貨を取引する組織であり、通常は企業です。欠点としては、単一障害点と中央集権化が挙げられます。特に、トランザクションは有効なブロックに含まれていれば有効ですが、トランザクションとブロックの両方の有効性はマークルツリー証明によって評価することができます。
https://gyazo.com/ddf18481705ebcfeb281ecdaece6b9be
この方法は最もシンプルで簡単ですが、かなり中央集権化されている方法と言えます。ブロックチェーン間でデジタルアセットをやり取りするときに、もう一方のブロックチェーンでそのアセットが有効化されるまでどこか特定の監査人がそのアセットを保持しておくという方法です。
この方法で10BTCがメインチェーンとサイドチェーン間で監査人Aを介してやり取りされる状況を考えましょう。この場合、メインチェーンから監査人Aに10BTCが送られ、サイドチェーンでその10BTCがデータとして有効化されるまで、監査人Aが10BTCを預かっていることになります。この場合、監査人Aを絶対的に信頼しなくてはいけなく、Trustlessなビットコインネットワークの特徴を活かしていないことになります。
4.3federated two-way pegs(NIPoPoWs)
federated two-way pegsは、centralized two-way pegsを分散化しようとします。
このソリューションでは、1つのグループが資金のロックとロック解除のプロセスを担当するのではなく、1つのグループが責任を負う一般的な実装はマルチシグネチャ方式に依存しており、ネットワークが有効と判断するためには、一定数のエンティティが取引に署名しなければなりません。より良い選択肢ではありますが、中央集権を完全に排除するものではありません。
この方法は上記のSingle Custodianを応用した方法になります。ブロックチェーン間のやり取りをひとつの特定の監査人が媒介するのではなく、マルチシグのアドレスを使うことで複数の監査人が介することが可能になります。
つまり、ブロックチェーン間の送信のときに特定の監査人に全てのデジタルアセットが預けられるというリスクを低減することができます。なぜなら、マルチシグネチャを使っているので、ひとつのある監査人が預かったBTCを盗もうとしても他の監査人が認めないことで盗難は防ぐことができるからです。
Blockstreamが進めているLiquidというサイドチェーンもこの方法を採用しています。Liquidはサイドチェーン上に共同のビットコインプールを用意することで、異なるサービス上でビットコインのやり取りを瞬時に行うことができるのです。特にLiquidではBlockstreamが開発したより優れたセキュリティを強みとする「strong federations」を導入しています。
Blockstreamは他にも、Elementsというオープンソースのサイドチェーンを開発しています。Elementsでは、スマートコントラクトやSegwitなどさまざまな新しい機能の追加を目指しています。
このように、メインチェーンとサイドチェーンに機関が介入するメリットとしては、ソフトフォークなどでビットコインのプロトコルに変更を加える必要がないということがあげられます。また、後述する方法(Drivechain)と比べてサイドチェーン→メインチェーンの送信が高速であるというメリットもあげられます。(一方で、メインチェーン→サイドチェーンの送信時間はDrivechainと比べて少し遅めになると考えられています。)
デメリットとしては、監査人が存在するということがビットコインネットワークがP2Pでなくなってしまうということです。さらに、複数でも監査人を信頼しなければならないというリスクがあります。
4.4Drivechain
Drivechainは上記のSPV proofを応用した方法で、SPV-sidechainと方法は似ています。Drivechainはマイナーがブロックチェーン間の監査人となる方法で、マイナーの投票により資産の移動が行われます。つまり、Drivechainではマイナーが最も安全で信頼のできる監査人であると考えているのです。
サイドチェーンからメインチェーンへの資産の移動は、全体の51%以上のマイナーが許可した場合のみ行うことができます。また、メインチェーンとそれぞれのサイドチェーンの管理は同一のマイナーが行っているので、どのサイドチェーンもメインチェーンと同じアルゴリズムで実装されます。これはDrivechainの大きなメリットであり、ネットワーク全体の仕様をシンプルに保つことができるのです。Drivechainでは同一のマイナーがメインチェーンとサイドチェーンの管理を行うので、マイナーはマージマイニングを行う必要があります。マージマイニングとは、マイナーがメインチェーンとサイドチェーンで同時にマイニング作業をすることです。マージマイニング自体は新しい技術ではなくすでにNamecoinで実装されていますが、そのままDrivechainに導入するのはいくつかの懸念点があるのでBMM(Blind Merge Minig)などの新しい技術が開発されている状況です。
Drivechainのデメリットとしては、多くのサイドチェーンが導入されればされるほどマイナー側のコストが高くなる点があげられます。また、Drivechainの自体の実装には、SPV sidechain同様にソフトフォークでの実装が必要となります。
4.5複数の方法のハイブリッド
上述した4つの方法を組み合わせてサイドチェーンを実現させることも考えられます。例えば、ビットコイン上にスマートコントラクトの機能拡張を目指しているRSK(Rootstock)では、driverchainとマルチシグアドレスの利用による複数の監査人を組み合わせることを考えています。つまり、マイナーと複数の監査人にブロックチェーン間のやり取りを管理する権限を与えるのです。ただ、drivechainは上述のようにソフトフォークによる実装が必要になるので、現時点では複数の監査人による方法のみを用いています。
5.ホワイトペーパー
ホワイトペーパーに記載されているtwo way pegの方法は↓2種類。
Symmetric two-way peg
SPV pegを使ったアプローチで、親チェーンのコインをSidechainに転送するため、親チェーンのコインを親チェーン上の特殊なOutputに送り、それをアンロックできるのはSidechain上のSPV証明のみ。
2つのチェーンを同期させるには、以下の2つの待機期間を定義する必要がある。
1.confirmation period
confirmation periodはコインがSidechainへ転送されるまでの間、親チェーン上でコインをロックしておく必要がある時間。このconfirmation periodを設定するのは、対象となるコインのUTXOのConfirminationが進む時間を確保するため。
confirmation periodとして設定する典型的な期間は1日か2日になる。
親チェーン上で特殊なOutputを作成したら、ユーザはconfirmation periodに設定された時間待った後、このOutputを参照するトランザクションをSidechain上に作成し、親チェーン上で充分Confirmationが進んだことを証明するSPV証明を提供する。
confirmation periodはSidechainのセキュリティパラメータで、セキュリティとチェーン間の転送時間はトレードオフになる。
2.contest period
Sidechain上にトランザクションが作成されると、続いてユーザはcontest periodを待つ必要がある。contest periodは転送されたコインがSidechain側で消費されてないことを確認するための時間。contest periodを設定するのは、以前にロックされたコインを転送することによる二重使用を防ぐため。contest periodとして設定する典型的な期間は1日か2日になる。
ユーザがこれらの遅延を回避する方法としてAtomic swapsを利用するという方法もある。
親チェーンでロックされている間、コインはSidechain内では自由に転送することができる。ただ、親チェーンのコインであるというアイデンティティは保持しており、送られてきた親チェーンにしか戻すことはできない。
Sidechainから親チェーンにコインを戻したい場合は、Sidechainに転送する際に行ったことと同じことを行う。Sidechain側でSPVロックしたOutputを作成し、親チェーンに送る。親チェーンでは以前ロックした出力をSPV証明を使ってアンロックし、親チェーン上で利用可能にする。(親チェーンに戻す際もconfirmination period と contest periodの待機時間は発生する)
チェーン間の処理の流れ(ホワイトペーパーから抜粋)
https://gyazo.com/bacaba2715d330080e431e604c3b7aa1
Sidechainにペグするといろんなチェーンからアセットを転送できるようになるが、各チェーンのセキュリティについては仮定できないので、アセットに互換性を持たせない方が良い。そうしないと価値の無い資産で価値の無いチェーンを作成しSidechainにペグされるとSidechain内で無価値のアセットと価値のあるアセットとの交換が発生しアセットが盗難されることも考えられる。そのためSidechain側では親チェーンが異なる場合はそれぞれ別のアセットタイプとしてアセットを扱うようにする必要がある。
要約すると、親チェーンとSidechan間で相互にSPV検証を行うようにしようという提案。親チェーンのクライアントが全Sidechainの観察を行うことは期待できないので、ユーザがコインの所有を証明するには、Sidechainのproofs of workを親チェーンにインポートする必要がある。そして親チェーンとしてBitcoinのBlockchainを使用する場合は、このようなSPV証明を検証できるスクリプトの拡張が必要とされる。そしてその証明はBitcoinの取引に収まるくらいコンパクトにする必要がある。
Asymmetric two-way peg
基本的な仕組みはSymmetric two-way pegと変わらないけど、親チェーンからSidechainへの転送にはSPV証明を必要としない。
6.AtomicSwpとの違い
共通点:複数のブロックチェーン間でデータをやり取りする技術
相違点:
AtomicSwap
さまざまな仮想通貨間でシームレスに両替(交換)できることを目指しており、仮想通貨の経済圏をひとつにまとめたい
すでに存在しているアルトコインのブロックチェーンへトランザクションを作れる技術
現状のアトミックスワップはペイメント(仮想通貨のやり取り)のみ
Sidechain
ビットコインの手助けをする形で、ビットコインの機能拡張およびスケーラビリティ問題の解決を目指す
ビットコインの機能を拡張するために新しくブロックチェーンが作られる
サイドチェーンにスマートコントラクトの機能をつけるなどしてビットコインの機能を拡張することが可能
メインチェーンとサイドチェーン間の仮想通貨(トークン)の交換であれば、サイドチェーンがアトミックスワップの仕様に適している前提で理論上、アトミックスワップでも行うことは可能です。実際に、Drivechainではプロセスの一部でアトミックスワップを用いることによってサイドチェーンからメインチェーンへの引き戻し時間を早めようとしています。
しかし、アトミックスワップだけを用いるとサイドチェーンの管理(マイニングなど)はどうするのか、という問題が残ってしまいます。サイドチェーンはビットコインの側鎖なので、マイニングするインセンティブがありません。Drivechainではその「管理問題」も含めて解決しようとしています。
つまり、アトミックスワップの技術をサイドチェーンのTwo-way Pegのプロセスの中で応用することは行われようとしています
参考記事